class Stack {
    constructor(){
        // 存储数据
        this.data = []
        // 记录栈的数据个数，相当于数组的length
        this.count = 0
    }
    // 入栈方法
    push(item){
        // 1:利用数组的push方法
        // this.data.push(item)
        // 2:利用数组的length属性
        // this.data[this.data.length] = item
        this.data[this.count] = item
        this.count++
    }
    // 出栈方法
    pop(){
      if(this.isEmpty()){
        console.log("pop:栈为空")
        return
      }
      // 1:pop方法
    //  return this.data.pop()
    // 2:
      let temp = this.data[this.count-1]
      delete this.data[--this.count]
    //   this.count--
      return temp
    }
    // 检测栈是否为空
    isEmpty(){
        return this.count===0
    }
    // top用于获取栈顶值
    top(){
        if(this.isEmpty()){
            console.log("top:栈为空")
            return
        }
        return this.data[this.count-1]
    }
    // size获取元素个数
    size(){
        return this.count
    }
    // clear清空栈
    clear(){
        this.data = []
        this.count = 0
    }
}
const s = new Stack()
s.push("a")
s.push("b")